home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 2109 / 2109.xpi / chrome / febe.jar / content / febeQuickBu.js < prev    next >
Text File  |  2009-10-13  |  8KB  |  221 lines

  1. // author: Chuck Baker
  2. // contact: febe@customsoftwareconsult.com
  3. // Version 6.3
  4.  
  5. var febeNameGuidxref = {};
  6.  
  7. function febeBuildList(){
  8.     // Clear the list
  9.     var theList = document.getElementById("febeExtList");
  10.     var children = theList.childNodes;
  11.     var n = children.length;
  12.     // Clear existing items
  13.     for (var i = 0; i < n; i++) {
  14.         theList.removeChild(children[0]);
  15.     }//for
  16.     
  17.     febeQuBuList();
  18.     
  19.     // Sort the list
  20.     var sortArray = [];
  21.     for(var i in febeExtensionsList){
  22.         sortArray.push(febeExtensionsList[i].Name);
  23.     }//for
  24.     sortArray.sort();
  25.     
  26.     for(var i in sortArray){
  27.         var data = febeExtensionsList[febeNameGuidxref[sortArray[i]]];
  28.         
  29.         var row = document.createElement('listitem');
  30.         
  31.         row.setAttribute('id', data.Guid );
  32.         row.setAttribute('type', "checkbox" );
  33.         var fxver = "(Fx ver "+data.Minversion+" - "+data.Maxversion+")";
  34.         row.setAttribute('label', data.Name+"{"+data.Version+"}  "+fxver );
  35.         row.setAttribute('checked', "false" );
  36.         if(data.Type == 2){
  37.             row.setAttribute('style', "color: blue;" );
  38.         }else{
  39.             row.setAttribute('style', "color: green;" );
  40.         }//if
  41.         if(data.isDisabled) row.setAttribute('style', "color: grey;" );
  42.         theList.appendChild( row );
  43.  
  44.     }//for
  45.     document.getElementById("febeSelectAllID").setAttribute("disabled","false");
  46.     document.getElementById("febeDeselectAllID").setAttribute("disabled","false");
  47.     return true;
  48. }//febeBuListWindow()
  49.  
  50. function febeSelect(bool){
  51.   // Select/deselect all
  52.     for(var i in febeExtensionsList){
  53.         var item = document.getElementById(i);
  54.         if(item){item.setAttribute("checked",bool);}
  55.     }//for
  56. }//febeSelect()
  57.  
  58. function febeSaveList(){
  59.  
  60. }//febeSaveList()
  61.  
  62. function febeQuBuList(){
  63.   //Get a list of all installed extensions/themes
  64.     febeProfDir = Components.classes["@mozilla.org/file/directory_service;1"]
  65.         .getService(Components.interfaces.nsIProperties)
  66.         .get("ProfD", Components.interfaces.nsIFile);
  67.     febeProfDir.append("extensions");
  68.     var extDir = febeProfDir.clone();
  69.     var entries = extDir.directoryEntries;
  70.     febeExtensionsList = {};
  71.  
  72.     while(entries.hasMoreElements()){
  73.         var entry = entries.getNext();
  74.         entry.QueryInterface(Components.interfaces.nsIFile);
  75.         if(!entry.isDirectory()){continue;}    // Don't process junk in the extension directory
  76.  
  77.         var guid = entry.leafName;
  78.         var thisExt = new febeExtInfo(guid);
  79.         if(!thisExt) continue;
  80.         var eType = thisExt.type;                            // 2=Extension, 4=Theme
  81.         if(eType != 2 && eType != 4){continue;}            // Not an extension or theme ... what is it?
  82.         
  83.         var ext = new febeExtObj;
  84.         ext.Name = thisExt.name;
  85.         ext.Type = eType;
  86.         ext.Version = thisExt.version;
  87.         ext.Icon = thisExt.iconURL; 
  88.         ext.Home = thisExt.homepageURL; 
  89.         ext.Guid = guid; 
  90.         ext.verified = false;
  91.         ext.Include = false;
  92.         ext.isDisabled = thisExt.isDisabled; 
  93.         ext.Minversion = thisExt.minVersion;
  94.         ext.Maxversion = thisExt.maxVersion;
  95.         
  96.         var ePath = extDir.clone();
  97.         ePath.append(thisExt.guid)
  98.         ext.Path = ePath.path; 
  99.         
  100.         febeExtensionsList[guid] = ext;
  101.         febeNameGuidxref[thisExt.name] = guid; 
  102.         
  103.         var tmp = "";
  104.         tmp=febeExtensionsList[thisExt.guid].Name+"\n";
  105.         tmp+=febeExtensionsList[thisExt.guid].Version+"\n";
  106.         tmp+=febeExtensionsList[thisExt.guid].Path+"\n";
  107.         tmp+=febeExtensionsList[thisExt.guid].Icon+"\n";
  108.         tmp+=febeExtensionsList[thisExt.guid].Home+"\n";
  109.         tmp+=febeExtensionsList[thisExt.guid].Guid+"\n";
  110.         tmp+=febeExtensionsList[thisExt.guid].verified+"\n";
  111.         tmp+=febeExtensionsList[thisExt.guid].Include+"\n";
  112.         tmp+="type: "+eType+"\n";
  113.     }//while
  114. }//febeQuBuList()
  115.  
  116. function febeQuickBu(){
  117.     febeProfDir = Components.classes["@mozilla.org/file/directory_service;1"]
  118.             .getService(Components.interfaces.nsIProperties)
  119.             .get("ProfD", Components.interfaces.nsIFile);
  120.     febeProfDir.append("extensions");
  121.     
  122.     var combined = document.getElementById("febeCreateSingleXPI").checked;
  123.     var combinedName = document.getElementById("febeCreateSingleXPIname").value +".xpi";
  124.     febeExBuDir = document.getElementById("febeQuickBuDir").value;
  125.     if(combined){
  126.         febeTmpDir = Components.classes["@mozilla.org/file/local;1"]
  127.                      .createInstance(Components.interfaces.nsILocalFile);
  128.         febeTmpDir.initWithPath(febeExBuDir);
  129.         febeTmpDir.append("QBuTmp")
  130.         if ((febeTmpDir.exists() && febeTmpDir.isDirectory())){febeTmpDir.remove(true);}
  131.         febeTmpDir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0777);
  132.     }//if
  133.     var cnt = 0;
  134.     for(var i in febeExtensionsList){
  135.         var which = document.getElementById(i);
  136.         if(which.getAttribute("checked") != "true"){continue;}        
  137.         var item = febeExtensionsList[i]
  138.         var extDir = febeProfDir.clone();
  139.         febeExtExt = ".xpi";
  140.         if(item.Type == 4){febeExtExt = ".jar"};
  141.         var extName = item.Name;
  142.         var extVer = febeStripSpaces(item.Version);
  143.         var extBuName = febeStripSpaces(extName)+"{" + extVer + "}"+febeExtExt;
  144.         var srcName = extDir.clone();
  145.         srcName.append(i);
  146.         srcName = srcName.path;
  147.         var destDir = febeExBuDir;
  148.         if(combined){destDir = febeTmpDir.path;}
  149.         febeZip(srcName,destDir,extBuName);
  150.         which.setAttribute("checked", false)
  151.         cnt++;
  152.     }//for
  153.     if(combined){
  154.         febeProfDir = Components.classes["@mozilla.org/file/directory_service;1"]
  155.             .getService(Components.interfaces.nsIProperties)
  156.             .get("ProfD", Components.interfaces.nsIFile);
  157.         febeProfDir.append("extensions");
  158.         febeProfDir.append(FEBE_GUID);
  159.         febeProfDir.append("!install.rdf");
  160.         var sourcefile = febeProfDir.path;
  161.         var destDir = febeTmpDir.path;
  162.         var dName = "install.rdf";
  163.         febeCopyFile(sourcefile,destDir,dName);    // Copy the install.rdf for the combined package
  164.         febeZip(febeTmpDir.path,febeExBuDir,combinedName);
  165.  
  166.         var tmp = febeMsg[218].replace(/%NUM%/,cnt);
  167.         tmp = tmp.replace(/%FNAME%/,combinedName);
  168.         febeAlert(tmp);
  169.         febeTmpDir.remove(true);
  170.     }else{
  171.         var tmp = febeMsg[217].replace(/%NUM%/,cnt);
  172.         febeAlert(tmp);
  173.     }//if
  174.     return true;
  175. }//febeQuickBu()
  176.  
  177. function febeQuickBuLoad(){
  178.     febeSetMsgs();
  179.     var qbuDir = febeMsg[216];
  180.     var prefName = "extensions.febe.quickBuDir";
  181.     if(febePrefs.prefHasUserValue(prefName)){
  182.         qbuDir = febeGetUnicharPref(prefName);
  183.     }else{
  184.         var prefName = "extensions.febe.extBUdir";
  185.         if(febePrefs.prefHasUserValue(prefName)){
  186.             qbuDir =febeGetUnicharPref(prefName);
  187.         }//if
  188.     }//if
  189.     document.getElementById("febeQuickBuDir").value = qbuDir;
  190.     febeBuildList();
  191. }//febeQuickBuLoad()
  192.  
  193. function febeCreateSingleXPIcheck(that){
  194.     document.getElementById("febeCreateSingleXPIbox").hidden = !that.checked;
  195. }//febeCreateSingleXPIcheck()
  196.  
  197. function febeQuickBuBrowse(){
  198.   // Select Quick backup destinaton directory
  199.     const nsIFilePicker = Components.interfaces.nsIFilePicker;
  200.     var fp = Components.classes["@mozilla.org/filepicker;1"]
  201.              .createInstance(nsIFilePicker);
  202.     fp.init(window, febeMsg[216], nsIFilePicker.modeGetFolder);
  203.     fp.appendFilters(nsIFilePicker.filterAll | nsIFilePicker.filterText);
  204.  
  205.     // Set default directory to current backup directory
  206.     var qbuDir = document.getElementById("febeQuickBuDir").value;
  207.     var dd = Components.classes["@mozilla.org/file/local;1"]
  208.              .createInstance(Components.interfaces.nsILocalFile);
  209.     dd.initWithPath(qbuDir);
  210.     fp.displayDirectory = dd;
  211.  
  212.     var rv = fp.show();
  213.     if (rv == nsIFilePicker.returnOK){
  214.         rv = fp.file;
  215.         qbuDir = rv.path;
  216.         febeSetUnicharPref("extensions.febe.quickBuDir", qbuDir);
  217.         document.getElementById("febeQuickBuDir").value = qbuDir;
  218.     }//if
  219.     return true;
  220. }//febeQuickBuBrowse()
  221.